Automatically performing user actions based on detected context-to-user-action correlations

ABSTRACT

A system and method are provided for automatically performing user actions at a device based on a context of the user device. In one embodiment, user actions taken by a user of a user device and corresponding contexts of the user device at times at which the user actions were taken are monitored to detect context-to-user-action correlations. Each context-to-user-action correlation defines a context of the user device and a user action historically taken by the user of the user device for when the device is in that context. Subsequently, a current context of the user device is obtained and compared to the stored context-to-user-action correlations to identify a matching context-to-user-action correlation. The user device then automatically performs the user action that is correlated to the current context as defined by the matching context-to-user-action correlation.

RELATED APPLICATION

This application claims the benefit of provisional patent applicationSer. No. 61/173,625, filed Apr. 29, 2009, the disclosure of which ishereby incorporated herein by reference in its entirety.

FIELD OF THE DISCLOSURE

The present disclosure relates to automatically performing user actionsat a user device based on a context of the user device.

BACKGROUND

Users often control their mobile devices differently in differentcontexts. For instance, a user may set his mobile phone to a silent modewhen in an important meeting or in a movie theater and set his mobilephone to ring at a maximum volume level when in a noisy environment suchas a shopping mall. However, performing such controls can becometedious. Further, forgetting to perform such controls can oftentimeslead to embarrassing situations such as a ringing mobile telephone whilewatching a movie at a movie theater. As such, there is a need for asystem and method of performing user actions on a mobile phone based oncontext in a manner that is automatic or that requires minimal userinput.

SUMMARY

A system and method are provided for automatically performing useractions on a device based on a context of the user device. In oneembodiment, user actions taken by a user of a user device andcorresponding contexts of the user device at times at which the useractions were taken are monitored to detect correlations between contextsof the user device and user actions taken by the user, which arereferred to herein as context-to-user-action correlations. Eachcontext-to-user-action correlation defines a context of the user deviceand a user action historically taken by the user of the user device forwhen the device is in that context. Subsequently, a current context ofthe user device is obtained and compared to the storedcontext-to-user-action correlations to identify a matchingcontext-to-user-action correlation. The user device then automaticallyperforms the user action that is correlated to the current context asdefined by the matching context-to-user-action correlation. Optionally,the user may be prompted for approval to perform the user action beforeperforming the user action.

Those skilled in the art will appreciate the scope of the presentinvention and realize additional aspects thereof after reading thefollowing detailed description of the preferred embodiments inassociation with the accompanying drawing figures.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

The accompanying drawing figures incorporated in and forming a part ofthis specification illustrate several aspects of the invention, andtogether with the description serve to explain the principles of theinvention.

FIG. 1 illustrates a mobile device including a Context to user ActionCorrelation (CAC) function according to one embodiment of the presentdisclosure;

FIG. 2 is a flow chart illustrating the operation of the CAC function ofFIG. 1 according to one embodiment of the present disclosure;

FIGS. 3A through 3C provide a flow chart illustrating the operation ofthe CAC function of FIG. 1 in more detail according to one embodiment ofthe present disclosure; and

FIG. 4 is a block diagram of the mobile device of FIG. 1 according toone embodiment of the present disclosure.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The embodiments set forth below represent the necessary information toenable those skilled in the art to practice the invention and illustratethe best mode of practicing the invention. Upon reading the followingdescription in light of the accompanying drawing figures, those skilledin the art will understand the concepts of the invention and willrecognize applications of these concepts not particularly addressedherein. It should be understood that these concepts and applicationsfall within the scope of the disclosure and the accompanying claims.

FIG. 1 illustrates a mobile device 10 including a Context to user ActionCorrelation (CAC) function 12 according to one embodiment of the presentdisclosure. Note that while the discussion herein focuses on the mobiledevice 10, the CAC function 12 may additionally or alternatively beimplemented on other types of user devices (i.e., non-mobile userdevices such as personal computers, set-top boxes, audio systems, or thelike). The mobile device 10 is a mobile device such as, for example, amobile smart phone (e.g., an Apple® iPhone), a portable media player(e.g., an Apple® iPod Touch® device), a laptop or notebook computer, atablet computer (e.g., Apple® iPad), or the like.

As illustrated, the mobile device 10 includes the CAC function 12, oneor more context sensors 14, and a CAC record repository 16. The CACfunction 12 is preferably implemented in software, but may beimplemented as a combination of hardware and software. In operation, theCAC function 12 monitors user actions taken by a user of the mobiledevice 10 and contexts of the mobile device 10 obtained from the contextsensors 14 at times at which the user actions were taken by the user. Inthe preferred embodiment, the context of the mobile device 10 includes alist of device identifiers (IDs) of a number of mobile devices 18located proximate to the mobile device 10, a list of user IDs for usersof the mobile devices 18 located proximate to the mobile device 10, alist of users in a social network of the user of the mobile device 10that are proximate to the mobile device 10, a list of users in a contactlist maintained by the mobile device 10 that are proximate to the mobiledevice 10, or a combination thereof. Note that the other mobile devices18 preferably have similar internal structures as the mobile device 10.Different reference numbers are used for the mobile device 10 and theother mobile devices 18 to enable the mobile devices 10 and 18 to bedifferentiated in the discussion herein.

In addition, the context of the mobile device 10 may include a locationof the mobile device 10 where the location of the mobile device 10 maybe expressed as geospatial coordinates (e.g., latitude and longitudecoordinates), a physical address (e.g., a street address), a predefinedlocation designation (e.g., “work” or “home”), Wi-Fi hotspot ID, or thelike. Still further, the context of the mobile device 10 may includedata defining one or more ambient conditions such as, for example,temperature, weather conditions, ambient sound level, ambient lightlevel (i.e., visibility), crowd density as estimated by, for example, anumber of proximate mobile devices 18 detected in the local wirelesscoverage area of the mobile device 10, crowd composition, geographicinformation system labels or metadata, or the like. Still further, thecontext of the mobile device 10 may include data from an accelerometerof the mobile device 10, which may indicate whether the user of themobile device 10 is walking, jogging, driving, sitting, or the like.Still further, the context of the mobile device 10 may include a numberof the mobile devices 10 having unknown users. Unknown users are usersthat are not known to the user of the mobile device 10 in a socialnetwork, contact list, or the like. The number of unknown usersproximate to the mobile device 10 may be indicative of being located ina public venue such as a sporting arena for a sporting event, concert,or the like. Still further, the context of the mobile device 10 mayinclude data obtained from an electronic calendar maintained for theuser of the mobile device 10 such as a status identifier for the user(e.g., “Meeting with Bob”) or the like.

The user actions monitored by the CAC function 12 are generally useractions taken by the user of the mobile device 10 to interact with themobile device 10. The user actions monitored by the CAC function 12 maybe any user action taken by the user to interact with the mobile device10. Alternatively, the CAC function 12 may only monitor for a definedset of user actions taken by the user to interact with the mobile device10 (e.g., monitor only volume control actions). While the types of useractions may depend on the particular implementation, some exemplary useractions that may be monitored by the CAC function 12 include, but arenot limited to, volume control actions, turning off the mobile device10, turning off a local wireless communication interface of the mobiledevice 10, activating a software application, closing a softwareapplication, changing a particular setting on the mobile device 10, orthe like. Further, the CAC function 12 may monitor user actions withrespect to the mobile device 10 in general. Alternatively, the CACfunction 12 may monitor user actions only with respect to one or moredefined software applications running on the mobile device 10. Forexample, the CAC function 12 may be incorporated into a particularsoftware application and only monitor only those user actions made bythe user with respect to that software application.

Based on the monitoring of the user actions taken by the user and thecorresponding contexts of the mobile device 10, the CAC function 12 isenabled to detect correlations between contexts of the mobile device 10and user actions taken by the user of the mobile device 10. Eachdetected correlation between a context and a user action taken by theuser of the mobile device 10 defines a context of the mobile device 10and a user action that has historically been taken by the user when themobile device 10 is in that context. The CAC function 12 may then usethe stored context-to-user-action correlations to automatically performuser actions in response to detecting the correlated contexts.

The context sensors 14 may be implemented in hardware, software, or acombination thereof. In general, the context sensors 14 are softwareand/or hardware components that are enabled to obtain data forming thecontext of the mobile device 10. The context sensors 14 preferablyinclude a local wireless communication interface such as, for example, aBluetooth® communication interface or a communication interfaceoperating according to one of the suite of IEEE 802.11x standards (i.e.,a Wi-Fi communication interface). Using the local wireless communicationinterface, the CAC function 12 is enabled to obtain a list of device IDsof mobile devices 18 that are located proximate to the mobile device 10,user IDs of users of the mobile devices 18 that are located proximate tothe mobile device 10, or a combination thereof. Here, the devices 18that are proximate to the mobile device 10 are mobile devices 18 thatare within a wireless coverage area of the mobile device 10 and/ormobile devices 18 for which the mobile device 10 is in their wirelesscoverage areas. The mobile device 10 may obtain the device IDs of themobile devices 18 and/or user IDs of the users of the mobile devices 18by passively monitoring wireless communications to or from the mobiledevices 18, by actively querying the mobile devices 18 for their deviceIDs or the user IDs of their users, or both.

The context sensors 14 may also include a software application thatinteracts with a social networking service (e.g., the Facebook® socialnetworking service) to identify other users in the social network of theuser of the mobile device 10 that are currently located proximate to themobile device 10. As used herein, a social networking service is also toinclude an Instant Messaging service or the like. More specifically, inone embodiment, the mobile device 10 may query the social networkingservice via a network connection (e.g., an Internet connection) with thedevice IDs of the mobile devices 18 or the user IDs of the users of themobile devices 18. In this embodiment, the social networking servicestores device IDs and/or user IDs for at least some of the users of thesocial networking service. As such, in response to receiving the query,the social networking service identifies users of the social networkingservice that correspond to the IDs included in the query, if any, anddetermines which of the identified users are in the social network ofthe user of the mobile device 10. The social networking service thenreturns information identifying the users in the social network of theuser of the mobile device 10 that have IDs matching those of the mobiledevices 18 or users of the mobile devices 18 that are proximate to themobile device 10. In an alternative embodiment, rather than querying thesocial networking service, the mobile device 10 may query anintermediate device or service between the mobile device 10 and thesocial networking service.

In another embodiment, the social networking service tracks locations ofusers of the social networking service. As such, CAC function 12 of themobile device 10 may query the social networking service for members ofthe social network of the user of the mobile device 10 that arecurrently located proximate to the current location of the mobile device10. The social networking service determines which members of the socialnetwork of the user of the mobile device 10 are proximate to the currentlocation of the mobile device 10 and returns information identifyingthose members to the CAC function 12 at the mobile device 10. Here,members of the social network of the user are proximate to the currentlocation of the mobile device 10 if, for example, they are within adefined distance from the current location of the mobile device 10, atthe same street address as the mobile device 10, or the like.

Note that, as yet another alternative, a contact list of may bemaintained and stored at the mobile device 10 that include a number ofcontacts of the user. The contact list may also include device IDs ofmobile devices associated with at least some of the contacts. The CACfunction 12 may then use the device IDs of the mobile devices 18 and thedevice IDSs in the contact list to identify other users in the contactlist of the user that are currently proximate to the mobile device 10.

The context sensors 14 may also include a location determinationfunction that operates to sense or otherwise obtain the location of themobile device 10. The location determination function may be, but is notlimited to, a Global Positioning System (GPS) receiver. The contextsensors 14 may also include one or more context sensors 14 for detectingor otherwise obtaining ambient conditions such as, for example,temperature, weather conditions, ambient sound level, ambient lightlevel (i.e., visibility), crowd density, or the like. The contextsensors 14 may detect the ambient conditions directly or obtain theambient conditions from a remote device or service (e.g., an Internetbased weather service). Further, the one or more context sensors 14 mayinclude an accelerometer for detecting user or device movement. Stillfurther, the context sensors 14 may include a software component forobtaining relevant contextual data from an electronic calendarmaintained for the user of the mobile device 10, where the electroniccalendar may be stored locally at the mobile device 10 or remotely by,for example, an Internet based service.

In this embodiment, the CAC record repository 16 stores a number of CACrecords for potential context-to-user-action correlations, which arereferred to herein as potential CAC records, and a number of CAC recordsfor actual context-to-user-action correlations, which are referred toherein as actual CAC records. Each CAC record, whether potential oractual, defines a user action and a context of the mobile device 10. Inaddition, the CAC record may include a counter that counts the number oftimes the defined user action has been detected when the mobile device10 is in the defined context, timestamps defining times at which thedefined user action has been detected when the mobile device 10 is inthe defined context, or both. The CAC record may also include a flag, orindicator, that indicates whether the CAC record is for an actualcontext-to-user-action correlation or a potential context or user actioncorrelation.

FIG. 2 is a flow chart illustrating the operation of the CAC function 12of FIG. 1 according to one embodiment of the present disclosure. First,the CAC function 12 detects correlations between contexts of the mobiledevice 10 and user actions taken by the user of the mobile device 10(step 100). More specifically, the CAC function 12 monitors the useractions taken by the user at the mobile device 10 and the context of themobile device 10 at the times the user actions were taken. Over time,via results of the monitoring, the CAC function 12 detects correlationsbetween contexts of the mobile device 10 and user actions taken by theuser of the mobile device 10. In general, a context-to-user-actioncorrelation is detected when the user of the mobile device 10 hashistorically performed a particular user action when the mobile device10 is in a particular context. One or more system-defined oruser-configurable rules may be used by the CAC function 12 to determinewhen a context-to-user-action correlation has been detected. Forexample, the CAC function 12 may detect a context-to-user-actioncorrelation when the user of the mobile device 10 has performed aparticular user action at the mobile device 10 when the mobile device 10is in a particular context, or in a number of matching contexts, atleast a defined minimum number of times (e.g., three times). As aspecific example, if the user tends to turn the ringer of the mobiledevice 10 off or tends to not take his or her telephone calls while theuser is proximate to three or more users while in the user's “work”Wi-Fi network, then the CAC function 12 may detect this as acontext-to-user-action correlation. Note that, as used herein, matchingcontexts are contexts that match exactly or match at least to apredefined threshold degree. As another example, the CAC function 12 maydetect a context-to-user-action correlation when the user of the mobiledevice 10 has performed a particular user action at the mobile device 10when the mobile device 10 is in a particular context, or in a group ofmatching contexts, at least a defined minimum number of times (e.g.,three times) within a defined amount of time (e.g., one month). Notethat the aforementioned examples are illustrative and are not intendedto limit the scope of the present disclosure. Other types of rules maybe used to detect context-to-user-action correlations.

While the discussion herein focuses on detection ofcontext-to-user-action correlations by the CAC function 12, the presentdisclosure is not limited thereto. In one embodiment, in addition to oras an alternative to detection of context-to-user-action correlations bythe CAC function 12, the CAC function 12 may enable the user of themobile device 10 to manually define one or more context-to-user-actioncorrelations. These user-defined context-to-user-action correlations maythen be used by the CAC function 12 to automatically perform the defineduser actions in response to detecting the corresponding contexts in themanner described below.

The CAC function 102 then obtains a current context of the mobile device10 (step 102). In the preferred embodiment, the current context of themobile device 10 includes a list of device IDs of the mobile devices 18currently located proximate to the mobile device 10, a list of user IDsfor users of the mobile devices 18 currently located proximate to themobile device 10, a list of users in a social network of the user of themobile device 10 that are currently proximate to the mobile device 10, alist of users in a contact list maintained by the mobile device 10 thatare proximate to the mobile device 10, or a combination thereof. Inaddition, the current context of the mobile device 10 may include acurrent location of the mobile device 10 where the current location ofthe mobile device 10 may be expressed as geospatial coordinates (e.g.,latitude and longitude coordinates), a physical address (e.g., a streetaddress), a predefined location designation (e.g., “work” or “home”),Wi-Fi hotspot ID, or the like. Still further, the current context of themobile device 10 may include data defining one or more current ambientconditions such as, for example, temperature, weather conditions,ambient sound level, ambient light level (i.e., visibility), crowddensity, or the like. Further, the context of the mobile device 10 mayinclude data from an accelerometer that is indicative of user or devicemovement. Still further, the current context of the mobile device 10 mayinclude data obtained from an electronic calendar maintained for theuser of the mobile device 10 such as an event or meeting that the useris currently scheduled to be attending.

The CAC function 12 then automatically performs a user action that iscorrelated to the current context, if any (step 104). In one embodiment,the CAC function 12 automatically performs the user action by firstprompting the user of the mobile device 10 for approval to perform theuser action and then performing the user action upon receiving approvalfrom the user. In another embodiment, the CAC function 12 automaticallyperforms the user action without user interaction from the user of themobile device 10 (e.g., without first prompting the user for approval).In this embodiment, the CAC function 12 may, after automaticallyperforming the user action, provide an alert to the user indicating thatthe user action has been taken and why the user action has been taken(e.g., the context that triggered the user action). Note that contextsmay be named by the user as part of the context-to-user-action creationprocess.

FIGS. 3A through 3C provide a flow chart illustrating the operation ofthe CAC function 12 of FIG. 1 in more detail according to one embodimentof the present disclosure. First, the CAC function 12 monitors for auser action (step 200). Again, the user actions monitored for by the CACfunction 12 are generally user actions taken by the user of the mobiledevice 10 to interact with the mobile device 10. The user actionsmonitored by the CAC function 12 may be any user action taken by theuser to interact with the mobile device 10. Alternatively, the CACfunction 12 may only monitor for a defined set of user actions taken bythe user to interact with the mobile device 10 (e.g., monitor onlyvolume control actions). Further, the CAC function 12 may monitor useractions with respect to the mobile device 10 in general. Alternatively,the CAC function 12 may monitor user actions only with respect to one ormore defined software applications running on the mobile device 10. TheCAC function 12 then determines whether a user action has been detected(step 202). Note that while illustrated separately, steps 200 and 202may be implemented as a single step. If a user action has been detected,the CAC function 12 obtains the current context of the mobile device 10(step 204).

Next, the CAC function 12 determines whether there is a matching CACrecord for the current context of the mobile device 10 (step 206). Inone embodiment, a matching CAC record is either a potential CAC recordor an actual CAC record in the CAC record repository 16 of the mobiledevice 10 having a defined context that matches the current context ofthe mobile device 10 and a defined user action that matches the detecteduser action from steps 200 and 202. Again, as used herein, contextsmatch if they match exactly or at least to a predefined thresholddegree. One or more system-defined rules and/or one or moreuser-configurable rules may be used to determine whether the definedcontext of a CAC record matches the current context of the mobile device10. The one or more rules may state that, for example, the definedcontext of the CAC record matches the current context of the mobiledevice 10 if each contextual component (e.g., list of device IDs,location, etc.) of the defined context for the CAC record exactlymatches the corresponding contextual component of the current context ofthe mobile device 10. As another example, the one or more rules maystate that the defined context of the CAC record matches the currentcontext of the mobile device 10 if each contextual component (e.g., listof device IDs, location, etc.) of the defined context for the CAC recordmatches the corresponding contextual component of the current context ofthe mobile device 10 to at least a defined threshold degree (e.g., atleast 90% of device IDs in defined context of a CAC record are also inthe list of device IDs for the current context). As another example, theone or more rules may state that the defined context of the CAC recordmatches the current context of the mobile device 10 if some contextualcomponents (e.g., list of device IDs) of the defined context for the CACrecord match the corresponding contextual components of the currentcontext of the mobile device 10 to at least a threshold degree (e.g., atleast 90% of device IDs in defined context of a CAC record are also inthe list of device IDs for the current context) and other contextualcomponents (e.g., location) of the defined context for the CAC recordexactly match the corresponding contextual components of the currentcontext of the mobile device 10.

If there is no matching CAC record (referring to step 206), the CACfunction 12 creates a potential CAC record for the current context ofthe mobile device 10 and the detected user action and stores thepotential CAC record in the CAC record repository 16 (step 208), andthen the process returns to step 200 and is repeated. If there is amatching CAC record, the CAC function 12 determines whether the matchingCAC record is an actual CAC record (step 210). If the matching CACrecord is not an actual CAC record, the matching CAC record is apotential CAC record. As such, the CAC function 12 then updates thematching potential CAC record to reflect detection of the user action(step 212). More specifically, in one embodiment, the matching potentialCAC record includes a counter for the number of times the user actionhas been detected in the defined context. As such, the CAC function 12may then increase the counter by a value of one (1). In anotherembodiment, the matching potential CAC record includes a timestamp foreach occurrence of the user action for the defined context. As such, theCAC function 12 may add a timestamp to the matching potential CAC recorddefining the current time to indicate that the user action was detectedwith respect to the defined context at the current time. In addition,the defined context of the matching potential CAC record may be updatedbased on the current context. This is particularly the case where thecurrent context matches the defined context for the matching potentialCAC record less than exactly. For example, if the list of device IDsand/or user IDs for the current context does not match the list ofdevice IDs and/or user IDs for the defined context for the matchingpotential CAC record, any device IDs and/or user IDs in the currentcontext that are not included in the defined context for the matchingpotential CAC record may be added to the defined context for thematching potential CAC record. Note that, before adding the user IDs tothe defined context, this condition may be required to occur a thresholdnumber of times within a defined period of time.

In this embodiment, the CAC function 12 then determines whether apattern has been detected for the matching potential CAC record (step214). In this embodiment, a pattern is detected when the matchingpotential CAC record indicates that the user of the mobile device 10 hashistorically performed the defined user action when the mobile device 10is in the defined context. One or more system-defined oruser-configurable rules may be used by the CAC function 12 to determinewhen a pattern has been detected. For example, the CAC function 12 maydetect a pattern when the number of occurrences for the user actiondefined by the matching potential CAC record for the context defined bythe matching potential CAC record, as indicated by the counter stored inthe matching potential CAC record, is greater than a defined thresholdnumber of occurrences (e.g., three times). The defined threshold numberof occurrences may be user-defined or system-defined. For instance, inone exemplary embodiment, the CAC function 12 may track the number oftimes that the user must typically be prompted regarding a potential CACrecord before the user approves promoting the potential CAC record to anactual CAC record (see below) and then set the defined threshold numberof occurrences to that number. Thus, if the user typically approvespromoting potential CAC record to an actual CAC record after beingprompted two times, the defined threshold number of occurrences may beset to three. As another example, the CAC function 12 may detect apattern when a frequency of occurrence for the user action defined bythe matching potential CAC record for the context defined by thematching potential CAC record is greater than a defined thresholdfrequency of occurrence. The frequency of occurrence may be defined fromtimestamps stored in the matching potential CAC record for occurrencesof the defined user action when in the defined context. As an example,the defined threshold frequency of occurrence may be three times overthe last month. Note that the aforementioned examples are illustrativeand are not intended to limit the scope of the present disclosure. Othertypes of rules may be used.

If a pattern is not detected, the process returns to step 200 and isrepeated. If a pattern is detected, in this embodiment, the CAC function12 prompts the user of the mobile device 10 for approval to promote thematching potential CAC record to an actual CAC record (step 216). Inother words, the CAC function 12 prompts the user of the mobile device10 for approval to promote the matching potential CAC to an actual CAC.The CAC function 12 then determines whether approval has been receivedfrom the user of the mobile device 10 (step 218). If not, the processreturns to step 200 and is repeated. If approval is received from theuser, the CAC function 12 promotes the matching potential CAC record toan actual CAC record (step 220). In other words, the matching potentialCAC is promoted to an actual CAC. In one embodiment, the matchingpotential CAC record includes a flag indicating that the matchingpotential CAC record is a potential CAC record. As such, the matchingpotential CAC record may be promoted to an actual CAC record by settingthe flag such that the flag indicates that the matching potential CACrecord is now an actual CAC record. In one embodiment, promoting thematching potential CAC record to an actual CAC record may includeprompting the user for a name for the actual CAC record or morespecifically a name for the context defined by the actual CAC record,which may be used, for example, when displaying alerts. At this point,the process returns to step 200 and is repeated.

Note that steps 216 and 218 are optional. In another embodiment, theuser is not prompted for approval. Rather, the matching, potential CACrecord is automatically promoted to an actual CAC record withoutinteraction from the user of the mobile device 10. Further note thatwhether the user is prompted for approval may be a user configurablesetting.

Returning to step 210, if the matching CAC record is an actual CACrecord, the CAC function 12 updates the actual CAC record to reflect thedetection of the user action (step 222). In addition, the definedcontext for the actual CAC record may be updated based on the currentcontext in a manner to that described above. The process then returns tostep 200 and is repeated.

Returning to step 202, if a user action is not detected, the CACfunction 12 obtains the current context of the mobile device 10 (step224) and determines whether there are one or more matching actual CACrecords stored in the CAC record repository 16 (step 226). Here, thematching actual CAC records are actual CAC records that define contextsthat match the current context of the mobile device 10. Again, contextsmatch if they match exactly or at least a predefined threshold degree.One or more system-defined rules and/or one or more user-configurablerules may be used to determine whether the defined context of an actualCAC record matches the current context of the mobile device 10. The oneor more rules may state that, for example, the defined context of theactual CAC record matches the current context of the mobile device 10 ifeach contextual component (e.g., list of device IDs, location, etc.) ofthe defined context for the actual CAC record exactly matches thecorresponding contextual component of the current context of the mobiledevice 10. As another example, the one or more rules may state that thedefined context of the actual CAC record matches the current context ofthe mobile device 10 if each contextual component (e.g., list of deviceIDs, location, etc.) of the defined context for the actual CAC recordmatches the corresponding contextual component of the current context ofthe mobile device 10 to at least a defined threshold degree (e.g., atleast 90% of device IDs in defined context of CAC record are also inlist of device IDs for the current context). As another example, the oneor more rules may state that the defined context of the actual CACrecord matches the current context of the mobile device 10 if somecontextual components (e.g., list of device IDs) of the defined contextfor the actual CAC record match the corresponding contextual componentsof the current context of the mobile device 10 to at least a thresholddegree (e.g., at least 90% of device IDs in defined context of CACrecord are also in list of device IDs for the current context) and othercontextual components (e.g., location) of the defined context for theactual CAC record exactly match the corresponding contextual componentsof the current context of the mobile device 10.

If there are no matching actual CAC records, the process returns to step200 and is repeated. If there are one or more matching actual CACrecords, the CAC function 12 gets the next matching actual CAC recordand the user action defined by the matching actual CAC record (steps 228and 230). Note that there may be multiple matching actual CAC recordswhere, for example, the user of the mobile device 10 has historicallytaken multiple user actions when in the same context. The CAC function12 then prompts the user of the mobile device 10 for approval to takethe user action defined by the matching actual CAC record (step 232).The CAC function 12 then determines whether approval has been receivedfrom the user (step 234). If approval is not received, the processproceeds to step 238. Note that if approval is not received, the CACfunction 12 may record that fact that approval was not received inassociation with or as part of the CAC record. This information could beused by the CAC function 12 to identify and avoid future false alarms.If approval is received, the CAC function 12 performs the user actiondefined by the matching actual CAC record (step 236). Note that steps232 and 234 are optional. In another embodiment, the user is notprompted for approval. Rather, the user action defined by the matchingactual CAC record is automatically performed without first prompting foruser approval.

In yet another embodiment, approval whether or not approval is requestedfrom the user before performing the user action may be determined by theCAC function 12 on a case-by-case basis based on user configuration,user-defined or system-defined rules, whether the user has givenapproval for taking the user action in response to detecting thecorresponding context in the past, or whether the user has givenapproval for taking similar user actions in the past. For example, ifthe user has always or almost always allowed a user action for turningoff a ringer of the mobile device 10 when in a “movie theater” context,the CAC function 12 may automatically perform that user action inresponse to detecting the “movie theater” context without firstprompting the user for approval. In contrast, if the user has notconsistently turned off the ringer of the mobile device 10 when in a“meeting” context, then the CAC function 12 may prompt the user forapproval before performing that user action in response to detecting the“meeting” context.

In yet another embodiment, if the user action is performedautomatically, the CAC function 12 may monitor user actions for a shorttime (e.g., 5-10 seconds) after automatically performing the user actionto see if the user reverses the user action. Whether the user reversesthe automatically performed user action may then be stored in the CACrecord and used by the CAC function 12 to, for example, determinewhether to prompt the user for approval before performing the useraction in response to detecting the corresponding context in the future.

At this point, whether proceeding from step 234 or 236, the CAC function12 determines whether there are more matching actual CAC records toprocess (step 238). If so, the process returns to step 228 and isrepeated. Once all of the matching actual CAC records have beenprocessed, the process returns to step 200 and is repeated. Note thatnumerous variations to the process of FIGS. 3A through 3C will beapparent to one of ordinary skill in the art upon reading thisdisclosure and are considered within the scope of the presentdisclosure. For example, steps 228-238 may be modified such that theuser is prompted for approval for the user actions defined by all of thematching actual CAC records at once. For instance, the user may bepresented with a list of user actions, where the user is enabled toapprove any number of the user actions from the list as he or she maydesire. Also, along with each user action in the list, the user may bepresented with the corresponding context and the contextual componentsthat triggered the inclusion of the user action in the list. The usermay then be enabled to edit this list to modify the CAC records forfuture occurrences.

FIG. 4 is a block diagram of the mobile device 10 according to oneembodiment of the present disclosure. As illustrated, the mobile device10 includes a controller 20 connected to memory 22, one or moresecondary storage devices 24, one or more communication interfaces 26,one or more user interface components 28, and one or more contextsensors 14 by a bus 30 or similar mechanism. The controller 20 is amicroprocessor, digital ASIC, FPGA, or the like. In this embodiment, thecontroller 20 is a microprocessor, and the CAC function 12 isimplemented in software and stored in the memory 22 for execution by thecontroller 20. In addition, one or more of the context sensors 14 may beimplemented in software and stored in the memory 22 for execution by thecontroller 20. The one or more secondary storage devices 24 are digitalstorage devices such as, for example, one or more hard disk drives. Inone embodiment, the CAC record repository 16 is implemented in the oneor more secondary storage devices 24. The one or more communicationinterfaces 26 preferably include a local wireless communicationinterface such as, but not limited to, a Bluetooth® interface or an IEEE802.11x interface. In addition, the one or more communication interfaces26 may include a cellular telecommunications interface (e.g., GSM, LTE,W-CDMA, WiMAX, or the like). Note that an IEEE 802.11x interface or acellular telecommunications interface may be utilized to connect to aremote service such as, for example, a social networking service, anInternet based weather service, or the like. Also, note that the localwireless communication interface may be used as, or as part of, one ofthe context sensors 14. The one or more user interface components 28include, for example, a touchscreen, a display, one or more user inputcomponents (e.g., a keypad), a speaker, or the like, or any combinationthereof. Note that one or more of the user interface components 28 maybe used as, or as part of, one or more of the context sensors 14. Forexample, a microphone user interface component may be used to sense anambient sound level. Lastly, the mobile device 10 may include one ormore additional context sensors 14 such as, for example, a GPS receiver,or an ambient condition sensor (e.g., a temperature sensor).

Below, a number of exemplary use cases are provided. These use cases areintended to illustrate some but not all of the concepts described aboveand should not be construed as limiting the scope of the conceptsdisclosed and claimed herein.

Use Case #1:

-   -   1. Bob works at an IT company, and is a meeting with Jack, Jim,        Dave and Tim.    -   2. During the meeting Bob's wife calls him on his mobile device.    -   3. Bob immediately cancels the call and switches his mobile        device to “meeting mode.”    -   4. After about a week, Bob gets a call from a friend while he is        again in a meeting with Jack, Jim, Dave and Tim.    -   5. Bob cancels the call again and switches his device to        “meeting mode.”    -   6. This time Bob's device automatically scans for any devices        within its Bluetooth proximity range and finds the devices of        Jack, Jim, Dave and Tim.    -   7. It then identifies/creates a context with these 4 devices.    -   8. The next time when all of these 4 devices are in its        proximity range, Bob receives an alert message from his device,        “Do you want to switch to meeting mode?”.    -   9. Bob is happy to have received the alert message before the        meeting started and accepts it.

Use Case #2:

-   -   1. Bob goes to a live football game.    -   2. His device scans the wireless environment and finds about 50        devices in its Bluetooth proximity range, of which it recognizes        none from Bob's contact list.    -   3. But the device detects that 26 of the 50 devices in its        proximity range are tuned to a local internet radio/video        station that provides play-by-play audio commentary and video        replays of significant plays of the game he is attending. Here,        the context of Bob's device includes both the number of devices        in its Bluetooth proximity range and the number of those devices        tuned to the local internet radio/video station.    -   4. Bob's device identifies the current environment (large        density of unknown devices, a majority of those devices tuned to        a particular local “channel”) as a “Tar Heels football game”        context.    -   5. Bob's device automatically alerts Bob to the appropriate        local internet radio/video station that the nearby users are        listening to/viewing and tunes to that station upon approval        from Bob. Alternatively, Bob's device may automatically tune to        the station without approval from Bob.

Use Case #3:

-   -   1. Bob goes to a movie theatre.    -   2. His device scans the wireless environment and finds about 25        devices in its Bluetooth proximity range, of which it recognizes        none from Bob's contact list. It also detects from a light        sensor that the ambient lighting is very low.    -   3. The device identifies the current environment (large density        of unknown devices, dark surroundings) as a “Movie Theater”        context.    -   4. The device automatically switches to “silent mode.”

Those skilled in the art will recognize improvements and modificationsto the preferred embodiments of the present invention. All suchimprovements and modifications are considered within the scope of theconcepts disclosed herein and the claims that follow.

What is claimed is:
 1. A method of operation for a user device,comprising: detecting a plurality of context-to-user-actioncorrelations, each context-to-user-action correlation of the pluralityof context-to-user-action correlations defining a context of the userdevice and a user action historically performed by a user of the userdevice for the context; obtaining a current context of the user device;identifying a matching context-to-user-action correlation for thecurrent context of the user device from the plurality ofcontext-to-user-action correlations; and automatically performing a useraction correlated to the current context by the matchingcontext-to-user-action correlation.
 2. The method of claim 1 whereindetecting the plurality of context-to-user-action correlationscomprises: monitoring user actions taken by the user of the user deviceand corresponding contexts of the user device at times at which the useractions were taken by the user; and detecting the plurality ofcontext-to-user-action correlations based on monitoring the user actionstaken by the user of the user device and corresponding contexts of theuser device at times at which the user actions were taken by the user.3. The method of claim 1 wherein detecting the plurality ofcontext-to-user-action correlations comprises: detecting a user actiontaken by the user at the user device; obtaining a current context of theuser device at the time of detecting the user action; and determiningthat a context-to-user-action correlation for the current context andthe user action is detected if a number of occurrences of the useraction for contexts that match the current context is greater than apredefined threshold number of occurrences.
 4. The method of claim 1wherein detecting the plurality of context-to-user-action correlationscomprises: detecting a user action taken by the user at the user device;obtaining a current context of the user device at the time of detectingthe user action; and determining that a context-to-user-actioncorrelation for the current context and the user action is detected if afrequency of occurrence of the user action for contexts that match thecurrent context is greater than a predefined threshold frequency ofoccurrence.
 5. The method of claim 1 wherein detecting the plurality ofcontext-to-user-action correlations comprises: detecting a user actiontaken by the user at the user device; obtaining a current context of theuser device at the time of detecting the user action; determiningwhether the user action has been previously detected for a context thatmatches the current context; and storing a potentialcontext-to-user-action correlation for the current context and the useraction if the user action has not been previously detected for a contextthat matches the current context.
 6. The method of claim 5 whereindetecting the plurality of context-to-user-action correlations furthercomprises, if the user action has been previously detected for a contextthat matches the current context: determining whether acontext-to-user-action correlation has already been detected and storedfor the user action and a context that matches the current context; if acontext-to-user-action correlation has not already been detected andstored, determining whether a pattern is detected for the user actionand the current context; if a pattern is detected, prompting the userfor approval to store a context-to-user-action correlation for the useraction and the current context; and if the user provides approval,storing a context-to-user-action correlation for the user action and thecurrent context as one of the plurality of context-to-user-actioncorrelations.
 7. The method of claim 5 wherein detecting the pluralityof context-to-user-action correlations further comprises, if the useraction has been previously detected for a context that matches thecurrent context: determining whether a context-to-user-actioncorrelation has already been detected and stored for the user action andthe context that matches the current context; if acontext-to-user-action correlation has not already been detected andstored, determining whether a pattern is detected for the user actionand the current context; and if a pattern is detected, storing acontext-to-user-action correlation for the user action and the currentcontext as one of the plurality of context-to-user-action correlationswithout user interaction.
 8. The method of claim 1 wherein automaticallyperforming the user action comprises: prompting the user of the userdevice for approval to perform the user action correlated to the currentcontext; and performing the user action correlated to the currentcontext in response to receiving approval from the user to perform theuser action.
 9. The method of claim 1 wherein automatically performingthe user action comprises automatically performing the user actioncorrelated to the current context without user interaction.
 10. Themethod of claim 1 further comprising: storing a user-definedcontext-to-user-action correlation that defines a context of the userdevice and a user action defined by the user of the user device; andautomatically performing the user action defined by the user-definedcontext-to-user-action correlation when a current context of the userdevice matches the context defined by the user-definedcontext-to-user-action correlation.
 11. The method of claim 1 whereinfor each context-to-user-action correlation of the plurality ofcontext-to-user-action correlations, the context of the user devicedefined by the context-to-user-action correlation comprises at least oneof a group consisting of: one or more device identifiers of one or moreother user devices located proximate to the user device and informationidentifying one or more other users of one or more other user deviceslocated proximate to the user device.
 12. The method of claim 11 whereinthe context of the user device defined by the context-to-user-actioncorrelation further comprises at least one ambient condition.
 13. Themethod of claim 1 wherein for each context-to-user-action correlation ofthe plurality of context-to-user-action correlations, the context of theuser device defined by the context-to-user-action correlation comprisesinformation identifying other users in a social network of the userlocated proximate to the user device.
 14. The method of claim 1 whereinobtaining the current context of the user device comprises obtainingdevice identifiers of devices located proximate to the user device vialocal wireless communication.
 15. The method of claim 14 whereinobtaining device identifiers of devices located proximate to the userdevice via local wireless communication comprises passively monitoringlocal wireless communications for device identifiers of devices locatedproximate to the user device.
 16. The method of claim 14 whereinobtaining device identifiers of devices located proximate to the userdevice via local wireless communication comprises actively queryingdevices located proximate to the user device for the device identifiersof the devices located proximate to the user device via local wirelesscommunication.
 17. The method of claim 14 wherein obtaining the currentcontext of the user device further comprises obtaining at least oneambient condition.
 18. The method of claim 1 wherein obtaining thecurrent context of the user device comprises obtaining user identifiersof users of devices located proximate to the user device via localwireless communication.
 19. The method of claim 18 wherein obtaininguser identifiers of users of devices located proximate to the userdevice via local wireless communication comprises passively monitoringlocal wireless communications for user identifiers of users of deviceslocated proximate to the user device.
 20. The method of claim 18 whereinobtaining user identifiers of users of devices located proximate to theuser device via local wireless communication comprises actively queryingdevices located proximate to the user device for the user identifiers ofusers of the devices located proximate to the user device via localwireless communication.
 21. The method of claim 18 wherein obtaining thecurrent context of the user device further comprises obtaining at leastone of a group consisting of: temperature, weather, ambient light level,ambient sound level, and accelerometer data indicative of movement. 22.The method of claim 1 wherein obtaining the current context of the userdevice comprises obtaining information identifying users in a contactlist maintained on the user device that are located proximate to theuser device.
 23. The method of claim 1 wherein the user device is amobile device.
 24. A user device, comprising: a communication interface;and a controller associated with the communication interface and adaptedto: detect a plurality of context-to-user-action correlations, eachcontext-to-user-action correlation of the plurality ofcontext-to-user-action correlations defining a context of the userdevice and a user action historically performed by a user of the userdevice for the context; obtain a current context of the user device;identify a matching context-to-user-action correlation for the currentcontext of the user device from the plurality of context-to-user-actioncorrelations; and automatically perform a user action correlated to thecurrent context by the matching context-to-user-action correlation.